import {ChatDotRound} from "@element-plus/icons-vue";

export class AiUtil {

    static buildAiChatQuery = (conversationId, query) => {
        return {conversationId, query}

    }

    static buildBubble = (role, placement, content, loading, isMarkdown, avatar) => {
        return {
            // key, // 唯一标识
            role, // user | ai 自行更据模型定义
            placement, // start | end 气泡位置
            content, // 消息内容 流式接受的时候，只需要改这个值即可
            loading, // 当前气泡的加载状态
            // shape, // 气泡的形状
            // variant, // 气泡的样式
            isMarkdown, // 是否渲染为 markdown
            typing: role === 'ai', // 是否开启打字器效果 该属性不会和流式接受冲突
            isFog: role === 'ai', // 是否开启打字雾化效果，该效果 v1.1.6 新增，且在 typing 为 true 时生效，该效果会覆盖 typing 的 suffix 属性
            avatar,
            avatarSize: '24px', // 头像占位大小
            avatarGap: '12px', // 头像与气泡之间的距离
        }
    }
    // 把 yyyy-MM-dd HH:mm:ss 手动拆成数字
    static parseLocalDate = (str) => {
        const [date, time] = str.split(' ');
        const [y, m, d] = date.split('-').map(Number);
        const [H, M, S] = time.split(':').map(Number);
        return new Date(y, m - 1, d, H, M, S);   // 本地时间
    };

    static formatGroup = (dateStr) => {
        const d = this.parseLocalDate(dateStr);
        const now = new Date();
        const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
        const oneDay = 24 * 3600 * 1000;
        const diffDay = Math.floor((today - d) / oneDay);
        if (diffDay <= 0) return '今天';   // 包含今天及未来同一天
        if (diffDay === 1) return '昨天';
        if (diffDay === 2) return '前天';
        if (diffDay >= 3 && diffDay <= 6) return '一周前';
        return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}`;
    };

// 原函数
    static buildConversationItem = (conversationId, title, time) => {
        return {
            key: conversationId,
            label: title,
            group: AiUtil.formatGroup(time),      // 仅改这一行
            prefixIcon: markRaw(ChatDotRound)
        };
    };

}